// public // 共有属性
// protected // 该类及其孩子可以使用
// private // 私有属性：只有该类可以使用，其孩子也无法使用

// 定义一个函数接口
interface Ifunc {
    // getName 返回的必须是string类型
    getName: () => string
}

// implements Ifunc：让A类按照这个接口规范来
class A implements Ifunc{
    a1(){}
    a2(){}
    getName(){
        return "aaa"
    }
}
class B implements Ifunc {
    b1(){}
    b2(){}
    getName(){
        return 'bbb'
    }
}

function init(obj:Ifunc) {
    obj.getName()
}
// 实例化函数
let objA = new A()
let objB = new B()
init(objA)
init(objB)

export {}